perm filename RPG.FRM[P,JRA]5 blob
sn#409309 filedate 1979-01-10 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00001 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 ENDMK
C⊗;
∂20-OCT-76 0944 RPG
∂20-OCT-76 0403 JRA LISP
WHAT ARE YOUR FIRST IMPRESSIONS OF MANUSCRIPT? AND HOW FAR ALONG
ARE YOU? IF YOU WANT MORE, THE NEXT CHAPTER IS ALMOST READY.
JOHN
I am pretty much through chapter 2 (reading it fairly
carefully though), and have found some passages somewhat difficult
to understand (difficult in spite of the fact that I understand
what you are trying to get at). In particular, there is the section
on strictness/non-strictness/divergence etc. I have no specific complaints
about it , but I felt uncomfortable reading it the first time. I'm also
not too sure about the real advantage to the t/f vs. T/NIL decision. In some
sense, I view the ambiguity on LISP as one of its features.
I can take the next chapter whenever you are ready. I am planning
to really gung-ho it this weekend and be able to give back the commented
version I am reading.
-rpg-
∂25-OCT-76 1043 RPG
∂25-OCT-76 0358 JRA maclisp listing
the last listing i caught was about 6.5 pounds; that was pre-bibop:1972.
if you can tell me where the file(s) exist, i can list them early in the
morning.
john
ok, the source will appear in 1,rpg by Oct 26. it will be called
lisp.nnn where nnn is something like 232.
I am 3/4 done reading the parts 0Jβ#π[*βπ;⊃εC?C∃π#=β≠Ns'O!π#?;'>CQ84PH$%7↔β≥44Ph(=I*j>∞Qk9Y↓↓)Ad&∃α≥↓Ljε∞2M~A↓hP&↑⊗da1α*|r1αεt!α%α
∩∃α:⎇9αRJLJ:≥α$yα~2-~!αRD)α:>rj
&
⎇↓α∞>$)04*≤yα&Q∧JMα:⎇!α&9∧ α≡>|!αNR
"∃αRzα2>>ZαεQ8hP$$%m∩B≥4hP4(0=IBj?∂Qk9Y↓↓∪ A\&∃α≥↓L∩>>,hP&%βF[∃β6K;'OF+⊃βSF)β≠'↔≠QβC∂∪Qβ?2βS#∃ε∪??-ε;⊃βF[∃β&C∃β≠}c3?←Ns≤4+>+;↔K∞aβ∂?nk↔;S≠P4(&&C∃βC∂∪SMβ}qβ∪π& βOS↔+∂SW⊗K;≥β≡+↔7↔"βS=βn)βS=ε∪∃β≠␈∪∂↔⊃rα'Qβnd4+⊗)βS#∂!α%βF[∃β≡{7∃β⊗+O'∪.1βN;?SKJβ?9βoIβCπ↔!1β/!α%β6+3Qβ&CπQβO 4+∪N#9∨Qπ∪?31π#=β↔∂≠'3eph(&?rβS#∃ε{S#↔∩β#π;"aα%β6+3Qβ&CπQβ&C∃βO.≠S'?w→β?9∧*Zε3.S'?rβπ;⊂hSOCπ>C↔SSJβ←↔K*βπ7?v9βS#*β↔O"α%β#∂3∃βK.⊃β'rβS#π"βπK↔
↓#%;*qβ↔c≡+33↔w!%84U##∃βNkC3↔n+;Sπ&K?;Mπ;↔K∃πW'S*βW;∪/∪OSπv#π3*βπ;⊃π##∃βε{';S~β←↔K*β←↔3`h+7π&)94PJ7?K*βOC↔≡K≠'∂∞c3e1π##∃β≡{7Cπ⊗KO?9ε{Iβπv3?∨Jβ↔S>+↔9βnS#↔nS'∂∞`4+∪.3';'&K?;Mε;⊃β&S¬β∨#KW∂'+K';:βπCC.K↔⊃π#=β*β[↔KJβW;;∂#WKπbaβπ3&C?W∨@h*%β6+3Qβ&CπQβ&C∃βC}K;SMεkπ∪∃π;↔K∃ε;??⊃r4(&}qβOC∞;#↔S&I1β7Jβ≠↔↔fK;≥βO→βS#∂!β'QεKMβWv#?W&+∪3eπ≠?7↔&C';≥ε3?H4Wβ↔?Cf)β←#zβWO∃∧b&NAπ≠#?Wf!β/;␈9βπ␈+Q1β↔+Qβ'"β7πeεs?Qβ⊗)βO?n+S#'v9βS#∂ 4+'~β↔[↔∩βWO↔7+1β'rβCKπ∨#'∂∃rα%β#∂3∃βC/∪O?;∞c3eβv+[↔Iε[;?←rβπ;g}s∃β←Fyβ#π_h+WO.!β'QεK9βπwKS#'v9β3'↑)β¬βπ∪?∪W∨#'?9πβK?∨⊗5↓#/C∂↔C"β7∃%bβπ;⊃ε37?∨!β;?v(4+←Fyβ#π6)β↔[.qβWO.!β'Qε+c∂↔π!βS=π≠↔∃βF{]β'"β←?K←→9α'"βO↔↔o→βS#∂!βS#/∪∃β'_h+π3>gMβ
β↔S&+Iβ←∂IβS=ε∂#'/3∃β?v+Mβ↔v#MβSF9βJβ¬β∨.s↔KπbβCWKε{O∃↓0h+';.3≠'∂N+;Qβ6+πSW⊗+M9α∨βπ∨#/#S%βNs[πKN3eπ≠π[↔~βS?=εkW∂!εK;≠?⊗kπS'}q1βS.s∪L4W#=β≠∂3?Iβf+c'∂∞aβ[π⊗Kπ3/→↓#↔∨β↔∂'∞c3eβ>C↔9βN{UβW∨+π33Jβ←π;"β≠3WN!%1β∞s⊃β≠␈∪∂↔LhS3πkNs↔OMε{9βSF)βCπ↔!β?→π##∃βF∂/↔∩qα≠?∩β';O&;∂∃bα%β←⊗{S∃β
β#π'↔IβCπ'#↔K8hS7πS≡C↔Iβ}s∂∃β>C'∂!π∪↔GWO∪↔⊃β⊗+π1β⊗∂SK∞≠/';:β'9β
β∂πI}≠∪Iβ⊗+∂WK≡K?9↓Fs?Qβλh+O'oβ3∃β'∪↔∃β≡+πK∂BI9αSF)β7π&≠#↔Iε{≠S↔rβ#π⊃π#=β∞≠SKπ≡Yβ';&yβ¬β≡{;SK}aβ≠K∞k∀4+&CπQβF⊃β.+9β↔FKS↔⊃rα←↔3baβ'9∧b&NA≠9Aα%π+O↔⊃π≠Cπ∨F+SS%bβπ;⊃εK9α6~2&Nαα$4+/CC3'≡KS3eπ+O↔⊃ε≠?;SNsWπSN{;M1π;#'∂Bβ∂3π⊗K≠'↔"β∂?;'∪?1β∞s⊃β←∂→β≠πO∪3eβ.3≠'∂N+;P4W##K?.;!βSF)β∂?oβ'3↔∩q↓#SF)β'∪. β←π~βS=βn/∃β&C∃β∂'⊃βK↔∨+KO'}qβ¬β∨+ 7∂}kCWS∂#'?8hS?→β&C∃β∂∂⊃βK↔∨+KO'}qβπMε{CC?≡+⊃βSzβ¬βOO≠S↔Iε≠?7C/#πS'}q%9αJβC3πrβS=β⊗+∂?∪(h+S#*α2&Nβ→]Aβ6+KO'}qβO?}q94PJπ;?&C↔Iβε{';Qε≠?;∂/∪;Mβ&C∃βW≡)β?→ε≠?;SNsWπSN{;MβNqβS#*β??Zqα'PhSO↔↔o→βS#∂!βS#/Iβ?;gIβπCε+πIβ↔∪'↔≠gI1βπ~β¬βC∂≠O';:β∂?;≡+CQβ⊗+S←↔.qβK↔∨+KO'}q<4+∨+K?/#';∃π∪↔SW⊗sMβπv!αB
ε≠?;S⊗{19α>+311ε+'S#/⊃β∂?w#';W∂#'?;~βO#?.c⊃β(h+CK/≠↔;S.!βπMε βCK};Kπ7nK;≥β≡['31ε{9β''→β?←raβ?IεKQβOF{W3⊃ε∪∃β≠g+O#↔"βπL4V βCWWS3';:β';S/∪3W∪*aβ?Iπ≠?7∃ε≠?77.sQβ7N;#Qβ⊗)β∪↔⊗K[↔⊃ε?W"β'SMεK;S↔⊗k↔∪'∂∪d4+ε{O'SN{9β←↔!βOS∞≠-β∂}sSK?bβOSgf)βπ;"αCK??∪π5α≡{W;S/⊃βOSNc∃84PJ%βπjβπ3←∂KMβC/Sk3↔"βπ?/!βS#*βWO∃ε{→β¬α∩2&Nαα7↔S∞cπ;∨.∨∃ π;#'∂Bβ'MhSO↔C∂∪πS∃ε3K?5π##∃α~k↔cC⊗+OO'}qβ;?&S'?rqα%β∞iβ;?"βGW↔∨#'?;Ns≥βSF)βWO.3W33v+OL4V{→βSF)β7↔&3π;?+π∨∃εMβ¬π##↔?⊗+S'∂∞aβS?}aβ?→ε;K↔π"β'7C␈∪Sπ;≡)1β/!βS#*4+?2β'Qβ∂→β¬βε+∪π∨};'∂πbβS??bqα←#.qα%α$↔⊃↓∪↓Yβ≠␈⊃α7∞≡KS#Jaα%β≡]βSF(4+/;'3∪/∪7↔;"β'Qβ≡WO↔"β←#↔rβS#∃π#←=βv{SπSN{;Mβ>+K∃βNsSK?'+∂↔⊃εK9βC∂∪π33.a84*
βC?'w!βS#O→↓πf;?3'≡C;↔O~⊃βO↔.kMβSzβ?O∨+K∃βO→βS#*β;πS/∪π1β∞k'∨.KSeβNs#↔K.sP4+Nqα2&≥↓1β;∞k↔3eε∪↔S←.+9βSF)βCK};Kπ5ε;⊃β&C∃β∪∂#¬9αv{]1αJβπ5β&+≠';O#↔3dhS;?Qπ#Kg'v9βS=π≠πeβ&CπQβO!β'Mπ##∃β∞∪'3''Iβ?→∧b&NAπ#=β←⊗KS∃βπ∪?∨K∞kMβπv!β↔c.≠WS∀hSS#↔jβ←#'≡Aβ7π↑+Mβ%π≠W∂!ε β;'7#eβ3∞s∨Wπ>)1β/!βS#∂!βS#*βπ'fKSeβ&yβ∂?w→βW@hS∂↔K&'9β⊗+OSKN≠S↔⊃ε+cCK/≠O'?w→β←#N≠!β∂∞qβ∃εcπS↔∩βπCCfK↔⊃β}qβ¬β≡kπ31π≠∂π3(h)#SFQβ'~βS#∃εCπ;∪f+Mβ?rβS#∃ε+[π3.S?IJβS#π"β7π/*β'Qβ
βWO↔7+1β3∞s∨Wπ>)84(L βC?NsQβSFQβg␈)β∪?r;QβO.+5βSzβ7π/*β'Mβ&CπQαdJNAβO→βπ9ε+;['⊗{;7↔w!βS#∂ 4+SF)βWO/⊃β∂πrβO'QεK;O'&)β?→π;#'3*β#'MπβK?∨⊗7Mβ∨+≠≠↔∩βSKπ.k¬1β∞s⊃β;␈!β∧4V≠?7CNc↔I7⊗O↔⊃εcπ;∨.∨∃βNqβ←#N≠!βg␈)β∂K.S∃βN{WIβε{???}{IβC⊗{∨Kπjaβπ;"β?? h+'QεK;S=π##∃β≡{;≠W≡K;≥β>{K3⊃ε{→βSF)β∂?oβ'3↔∩aβSSzβOW≠6+Iβπf{;∃βNqβS#*β∂KW.`4+←␈∪3⊃8hP&%β?+↔OM∧b&NAεKMβ;∂#WKπfceβ¬εCπ∂//⊃∨Mβπ∪?∨K∞k7';:β3π;?+π∨∃bβ'9β&CπP4V+[↔KJβ;'≠'Iβ#?}Yβ'Mε[π'f3∃bβπ;⊃πK?Uβ≡9β↔O##↔IεCπ;≥πK?WK≡+3→β␈⊃β;? h+π∂≡{K∪'v9βS=πK?WIε{←9β∞∪'3'&K↔M8hP&π9εK7C?↔#π;QεOC↔∨!β?→ε;eβ≡{7CK.C↔;OO3∃β∪O≠∂WO≡K?9β}1α2&≥↓β'Mπ;#d4VKQβ'~βS#π"βOW∂Bβπ9β}∪O∂W⊗)β3?}[';≥εcπ;∨.∨∃β≡C?W3"β∃βπ∪↔≠↔↔∪↔⊃β↔Iαε$hS#π∂↑+KM8hP&←↔fa1α%εc??-ε3?K←d to the next sections of the book, and will
put the commented first part in your mailbox, if you have one, or mine.
-rpg-
∂10-Nov-76 1351 RPG PROGV Feature
To: MACLSP.DIS[AID,RPG]:;
Here is a little known feature of Maclisp that may be of some
use:
(PROGV <VAR-LIST> <VALUE-LIST> <FORM1> <FORM2> ... <FORMN>)
EVALUATES <FORM1> ... <FORMN> AS A PROGN IN AN ENVIRONMENT
CREATED BY BINDING THE SYMBOLS IN <VAR-LIST> TO THE
RESPECTIVE VALUES IN <VALUE-LIST>. THAT IS, THE FIRST
TWO ARGUMENTS TO PROGV ARE EVALUATED; THE FIRST MUST
PRODUCE A LIST OF SPECIAL VARIABLES, AND THE SECOND
A LIST OF VALUES. THE VARIABLES ARE THEN BOUND TO THE
VALUES. IF TOO FEW VALUES ARE SUPPLIED, THE REST OF
THE VARIABLES ARE BOUND TO NIL. IF TOO MANY VALUES
ARE SUPPLIED, THE EXCESS VALUES ARE IGNORED.
THE BODY OF THE PROGV IS THEN EVALUATED AS A PROGN,
THE VARIABLES UNBOUND TO THEIR OLD VALUES, AND THE
VALUE OF THE LAST FORM IS RETURNED.
EXAMPLE:
(SETQ A 'FOO)
(SETQ B 'BAR)
(PROGV (LIST A B 'B) (LIST B) (LIST A B FOO BAR))
==> (FOO NIL BAR NIL)
∂10-Nov-76 1622 RPG Book
The static structure section is in my box.
I did not find it as well wriiten as the evaluator sections.
In particular the treatment of shallow binding was
misleading/incomplete.
-rpg-
∂11-Dec-78 1724 RPG NEWIO programming tips
To: "@MACLSP.DIS[AID,RPG]" at SU-AI
When compiling a file, if you want to do a require, just say:
(REQUIRE ...)
rather than the older:
(DECLARE (REQUIRE ...))
or whatever. NCOMPLR knows about REQUIRE.
The useful feature EVAL-WHEN can be used to do things in the compiler
environment much like a DECLARE:
(EVAL-WHEN (COMPILE) (DEFUN ZTESCH MACRO ...))
You can also have LOAD and EVAL appear in the options part as well as
the COMPILE. If EVAL and LOAD appear then the form will be EVALed at LOAD time.
(EVAL-WHEN (COMPILE) (DEFUN FOO MACRO (X) 'FOO))
is totally equivalent to
(DECLARE (DEFUN FOO MACRO (X) 'FOO))
and
(EVAL-WHEN (EVAL COMPILE) P1 P2 . . . PN)
is equivalend to
(DECLARE (EVAL (READ)))
(PROGN P1 P2 . . . PN)
finally, one wants a way to cause something to happen during loading
of the compiled code - that is what the LOAD options is.
(EVAL-WHEN (LOAD EVAL) (PRINT 'LOADING-MY-SYSTEM))
∂21-Dec-78 1219 RPG Bug fix in NEWIO
To: "@USERS.DIS[AID,RPG]" at SU-AI
A bug wherein part of the LISP reader believed itself to be
in linemode and part in character has been patched using partial
knowledge. This means that the patch may or may not work, and even
might cause further bugs. Things which could conceivably be effected
are input from non-data-disk/datamedia terminals, programs using
tyipeek, and some kinds of disk IO. Symptoms of further lossage could include
waiting for input when there shouldn't be any, reading too much stuff, etc.
-rpg-
∂22-Dec-78 1630 RPG DEFUN change.
To: "@USERS.DIS[AID,RPG]" at SU-AI
The first atom in a DEFUN is ALWAYS interpreted as the name of the function.
So in (DEFUN FEXPR MACRO ...) FEXPR is the name of the MACRO being defined.
-rpg-
∂09-Jan-79 1542 RPG MacLisp matcher
To: "@USERS.DIS[AID,RPG]" at SU-AI
Here's some changes to %MATCH you matcher fans:
;;;;;;;;;; the matching function ;;;;;;;;;;
;;;
;;; (arg 1) - p - pattern
;;; (arg 2) - d - data
;;; (arg 3) - alist - optional list of variables (* or ?) whose values
;;; are to be retained during the match, much like the
;;; = variables below.
;;; elements of a pattern:
;;; ? - matches anything
;;; * - matches one or more expressions
;;; ?<atom> - like "?", but sets ?<atom> to thing matched
;;; *<atom> - like "*", but sets *<atom> to list of things matched
;;; =<atom> - matched against value of <atom>
;;; (restrict <one of above ?-variables> <pred1> <pred2> .....)
;;; - the predi must eval to non-nil
;;; $r, ⊗r - same as RESTRICT
;;; (restrict <one of above *-variables> <pred1> <pred2> .....)
;;; - the predi must eval to non-nil when given the list
;;; that is being considered for that variable as its argument
;;; (irestrict <one of above *-variables> <pred1> <pred2> .....)
;;; - the predi must eval to non-nil when given each element of the list
;;; that is being considered for that variable as its argument
;;; (done incrementally). So %MATCH will apply these predicates as
;;; it scans the input.
;;; $ir,⊗ir - same as irestrict
;;;
;;; (%match p d <variables to retain>) attempts to match p against d
;;; (%continue-match p d <variables to retain>) attempts to get the next
;;; possible match between p and d (by different *-variable
;;; bindings.
;;*PAGE